
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CleanWebpackPlugin = require("clean-webpack-plugin");
module.exports = {
	devtool: 'eval-source-map',
	entry:  __dirname + "/app/main.js",//已多次提及的唯一入口文件
	output: {
		// path: __dirname + "/public",//打包后的文件存放的地方
		// filename: "bundle.js"//打包后输出文件的文件名
		path: __dirname + "/build",
        filename: "bundle-[hash].js"
	},

	devServer: {
		contentBase: "./public",//本地服务器所加载的页面所载的目录
		historyApiFallback: true,//不跳转，指向index.html
		inline: true, //实时刷新，设置为true，当源文件改变时会自动刷新页面
		port: 8085,
		hot: true
	},

	module: {
		rules: [
			{
				test: /(\.jsx|\.js)$/,
				use:{
					loader: "babel-loader",
					options: {
						presets: [
							"env","react"
						]
					}
				},
				exclude: /node_modules/
			},
			{
                test: /\.css$/,
                use: [
                    {
                        loader: "style-loader"
                    },
                    {
                        loader: "css-loader",
                        options: {
                            modules: true // 指定启用css modules
                            // localIdentName: '[name]__[local]--[hash:base64:5]' // 指定css的类名格式
                        }
                    },
                    {
                        loader: "postcss-loader"
                    }
                ]
            },
		]
	},
    plugins: [
        new webpack.BannerPlugin('小毛版权所有，翻版必究'),
        // new HtmlWebpackPlugin({
        //     template: __dirname + "/app/index.tmpl.html"//new 一个这个插件的实例，并传入相关的参数
        // }),
        new webpack.HotModuleReplacementPlugin(),//热加载插件
        // ,
        // new webpack.optimize.OccurrenceOrderPlugin(),//为组件分配ID，通过这个插件webpack可以分析和优先考虑使用最多的模块，并为它们分配最小的ID
        // new webpack.optimize.UglifyJsPlugin(),//压缩JS代码；
        // new ExtractTextPlugin("style.css")//分离CSS和JS文件
        // new CleanWebpackPlugin('build/*.*', {//去除build文件中的残余文件。添加了hash之后，会导致改变文件内容后重新打包时，文件名不同而内容越来越多
		// 	root: __dirname,
		// 	verbose: true,
		// 	dry: false
		// })
    ],
}